const fs = require('fs')

const http = require('http')
http
  .createServer((request, response) => {
    //是个流
    // console.log('response', getProtoChain(response))
    // console.log('request', getProtoChain(request))

    const { url, method, headers } = request
    console.log('url', url)

    if (url === '/' && method === 'GET') {
      fs.readFile('./index.html', (err, data) => {
        if (err) {
          response.writeHead(500, {
            //返回中文提示
            'COntent-Type': 'text/plain;charset=utf-8',
          })
          response.end('服务器没有文件')
          return
        } else {
          response.statusCode = 200
          response.setHeader('Content-Type', 'text/html')
          response.end(data)
        }
      })
    } else if (method === 'GET' && headers.accept.indexOf('image/') !== -1) {
      //内存占用很大
      // 单位时间片内占用内存
      // 造成服务端压力
      // 问题原因，readFile将内存加载到服务器
      //如何解决？ stream(流)
      //拼接url
      console.log('我进来了吗')
      console.log('url', '.' + url)
      fs.createReadStream('.' + url).pipe(response)
    } else if (url === '/json' && method === 'GET') {
      response.setHeader('Content-Type', 'text/json')
      response.end(JSON.stringify({ yinyin: '111' }))
    } else {
      response.statusCode = 404
      const data = fs.readFileSync('./404.html')
      if (data) {
        response.setHeader('Content-Type', 'text/html')
        response.end(data)
        return
      }
      response.setHeader('Content-Type', 'text/plain;charset=utf-8')
      response.end('404 没有文件')
    }

    //好理解吗？
    // response.end('hello winter')
    // 语义化，不太对

    // 面向理论，
    // 面向实际使用

    // devserver
  })
  .listen(3333, () => {
    console.log('start http://localhost:3333/')
  })

function getProtoChain(obj) {
  const protoChain = []
  while ((obj = Object.getPrototypeOf(obj))) {
    protoChain.push(obj)
  }
  return protoChain
}
